RustのResult<T, E>型
Result<T, E>型
Ok(T)とErr(T)
code:rs
enum Result<T, E> {
Ok(T),
Err(E),
}
成功時の型とエラー時の型を指定する
?演算子
Resultを返す関数内でのみ使える
Optional Chaining的なやつ
Resultを伝搬していって切りの良いところでErr時の処理を書いたりする
Errを受け取った時に関数の戻り値をErrにする
?が入るより昔のRustではtry!マクロが使われていた
Optional Chainingと違ってSomeの中身を変数に束縛もできる
code:rs
let w = get_hoge()?;
失敗した場合はその場でreturnし、上流の関数にエラーを渡す
methods
.is_ok(), .is_err()
booleanを返す
.ok()
Option<T>型に変換して返す。成功の場合はSome(T)、失敗時はNone
.err()
失敗した場合の値をOption<E>として返す
エラー時版のOption
.unwrap_or(fallback)
成功したらSomeの中身を、失敗時はfallbackを返す
.unwrap_or_else(fallback_fn)
unwrap_or(fallback)の引き数が関数になっているもの
失敗時にfallback_fnを実行して返す
.unwrap()
成功時はSomeの中身、失敗時はpanicを起こす
危険?
.expect(message)
.unwrap()と同じだが、panicした時にエラーメッセージを表示できる
.as_ref()
.as_mut()